/* Copyright (c) 2004-2024 Peigen.info. All rights reserved. */

package info.peigen.hotpot.component.gateway.dianlan.facade.command;

import info.peigen.hotpot.component.gateway.dianlan.facade.command.order.*;
import info.peigen.hotpot.component.gateway.dianlan.facade.command.result.*;

/**
 * <b>(DianlanServiceFacade)</b>
 *
 * @author Peigen
 * @version 1.0.0
 * @since 2022/8/25
 */
public interface DianlanServiceFacade {

    /**
     * 点蓝电桩登录
     *
     * @param order DianlanLoginOrder
     *
     * @return DianlanLoginResult
     */
    DianlanLoginResult login(DianlanLoginOrder order);

    /**
     * 心跳监测
     *
     * @param order DianlanHeartOrder
     *
     * @return DianlanHeartResult
     */
    DianlanHeartResult heart(DianlanHeartOrder order);

    /**
     * 点蓝电桩登录
     *
     * @param order DianlanLoginOrder
     *
     * @return DianlanLoginResult
     */
    DianlanStatusResult status(DianlanStatusOrder order);

    /**
     * 电桩主动停止充电
     *
     * @param order DianlanStubChargeFinishOrder
     *
     * @return DianlanStubChargeFinishResult
     */
    DianlanStubChargeFinishResult stopCharge(DianlanStubChargeFinishOrder order);

    /**
     * 远程启动充电应答
     *
     * @param order DianlanStubChargeResponseOrder
     *
     * @return DianlanStubChargeResponseResult
     */
    DianlanStubChargeResponseResult chargeResponse(DianlanStubChargeResponseOrder order);

    /**
     * 远程启动充电应答
     *
     * @param order DianlanStubStopChargeResponseOrder
     *
     * @return DianlanStubStopChargeResponseResult
     */
    DianlanStubStopChargeResponseResult stopChargeResponse(DianlanStubStopChargeResponseOrder order);

    /**
     * 电桩待机应答
     *
     * @param order DianlanStubAwaitResponseOrder
     *
     * @return DianlanStubAwaitResponseResult
     */
    DianlanStubAwaitResponseResult awaitResponse(DianlanStubAwaitResponseOrder order);

    /**
     * 电桩机械臂应答
     *
     * @param order DianlanStubArmResponseOrder
     *
     * @return DianlanStubArmResponseResult
     */
    DianlanStubArmResponseResult armResponse(DianlanStubArmResponseOrder order);

    /**
     * 枪头拔枪动作应答
     *
     * @param order DianlanStubSpearHeadResponseOrder
     *
     * @return DianlanStubSpearHeadResponseResult
     */
    DianlanStubSpearHeadResponseResult spearHeadResponse(DianlanStubSpearHeadResponseOrder order);

    /**
     * 电桩bms获取数据
     *
     * @param order DianlanStubBmsOrder
     *
     * @return DianlanStatusResult
     */
    DianlanStatusResult bmsResponse(DianlanStubBmsOrder order);

    /**
     * 费用数据
     *
     * @param order DianlanStubCostOrder
     *
     * @return DianlanStatusResult
     */
    DianlanStatusResult cost(DianlanStubCostOrder order);
}